package hausaufgabe01;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

import de.rwth.matse.dragon.*;

public class Testklasse
{
  private static Dragon d1;
  private static Dragon d2;
  
  private static Thread t1;
  private static Thread t2;
  
  private static Field feld;
  
  public class MoveDragon1 implements Runnable
  {
    public void run()
    {
      // Drache geht zum Haus des anderen
      while(!feld.get(1, 5).contains(d1))
      {
        d1.move();
        if(!d1.canMove())
          d1.turnLeft();
      }
      
      // Wenn der andere Drache nicht dort ist, geht er wieder nach Hause
      while(!feld.get(5, 1).contains(d1))
      {
        d1.move();
        if(!d1.canMove())
          d1.turnLeft();
      }
    }
  }
  
  public class MoveDragon2 implements Runnable
  {
    public void run()
    {
      // Drache geht zum Haus des anderen
      while(!feld.get(5, 1).contains(d2))
      {
        d2.move();
        if(!d2.canMove())
          d2.turnLeft();
      }
      
      // Drache tut nichts, bis der andere Drache da ist
      while(!feld.get(5, 1).contains(d1))
      {}
      
      // Solange er nichts nehmen kann, geht er durch das Feld und geht nach links, wenn es geht
      while(!d2.canTake())
      {
        if(!d2.canMove() || feld.get(5, 3).contains(d2))
          d2.turnLeft();
        d2.move();
      }
      d2.take();
    }
  }
  
  public static void main(String[] args) throws FileNotFoundException
  {
    feld = Field.read(new DragonFieldReader(new Scanner(new File("dragonfield.txt"))));
    
    d1 = new Dragon(5, 1, Direction.LEFT, 2, feld);
    d2 = new Dragon(1, 5, Direction.RIGHT, 2, feld);
    
    Testklasse r = new Testklasse();
    
    Runnable r1 = r.new MoveDragon1();
    Runnable r2 = r.new MoveDragon2();
    
    t1 = new Thread(r1);
    t2 = new Thread(r2);
    
    t2.start();
    t1.start();
  }
}
